接下來詳細一點的說明 YOLOv4 的內部架構!
目標檢測通常由以下幾個部分組成:
YOLOv4 模型的架構是由這三部分組成的:
Dropout 是一個有效降低 Overfitting 的方法,與權重衰減的精神相似,皆是在訓練
模型時使用的正則化方法,在訓練時每一次的迭代(epoch)皆以一定的機率丟棄隱藏層神經元,而被丟棄的神經元不會傳遞訊息。
在反向傳播時,被丟棄的神經元其梯度是 0,所以在訓練時不會過度依賴某一些神經元,藉此達到對抗 Overfitting 的效果。
要特別注意的是,因為 dropout 只能在訓練時使用,所以會造成測試時向前傳播的訊息大於
訓練時向前傳播的訊息,通常會在測試時乘以 1/p 改善這個問題。(這個方式叫 inverted dropout)
為了避免結果大於訓練的情況,需要測試的時候將輸出結果乘以 1/p
使下一層的輸入規模保持不變!
而利用inverted dropout,可以在訓練的時候直接將dropout後留下的權重擴大 1/p 倍,這樣就可以使結果的scale保持不變,而在預測的時候也不用做額外的操作了,更方便一些~
Overfitting:Overfitting 顧名思義就是機器過於糾結誤差值,過度學習訓練資料,變得無法順利去預測或分辨不是在訓練資料內的其他資料。
權重衰減的主要目的是「抑制更新參數的幅度」,在訓練模型時預測的結果會通過 loss 函數評估結果與真實值的差距,再藉由梯度下降更新參數,而權重衰減的方法是在 loss 函數加上一個懲罰項
。
用線性回歸中的例子來看:損失函數為 loss(w, b),我們在這個損失函數後加上一個帶有 L2 范數的懲罰項,其中 λ 是懲罰項的倍率,當 λ=0 時,則權重衰減不會發生;當 λ 越大時,懲罰的比率較高,權重衰減的程度也就跟著變大。
weight decay 也是一種對抗模型 overfitting 的正則化方法。
也了解到透過修改懲罰項的係數 λ,改變權重衰減的倍率對於訓練模型會有不一樣的效果。